"""
Python的面向对象

面向过程：以线性的流程为基本单位，通过函数和事物的逻辑进行封装在一起实现程序的设计

面向对象：以对象为基本单位，通过封装、继承和多态等特性，来实现程序的设计和实现
类：就是一个模版。      属性和行为         变量和方法
对象：按照类这个模版创造出来的真实的实物
实例化：从类到对象的过程
抽象化：从对象到类的过程

类的创建：
class 类名：
    类体{变量和方法}

类的调用：
变量 = 类名()
变量.变量名/方法名

继承：
    单继承：父类只有一个类
    多继承：父类有两个或两个以上的类

class 类名(父类的类名):
    类体

多态：
    方法重写：在子类中定义和父类重名的方法。但是和父类方法的方法体是不一样的，从而实现多态
    方法重载：在同一类中定义多个重名的方法，但是每个方法传入的参数不同，从而实现多态


"""
# class Person:
#     def __init__(self,name,age,sex):
#         self.name = name
#         self.age = age
#         self.sex = sex
#
#     def eat(self):
#
#         print("{}在吃饭".format(self.name))
#
#     def sleep(self):
#         print("{}在睡觉".format(self.name))
#
#     def show(self):
#         print("{}的年龄是{}岁".format(self.name,self.age))
#
# p1 = Person('张三',18,'男')
# p1.age = 20
# p1.eat()
# p1.sleep()
# p1.show()

# class Animal:
#     def __init__(self,name):
#         self.name = name
#
#     def eat(self):
#         print("{}在吃东西".format(self.name))
#
#     def sleep(self):
#         print("{}在睡觉".format(self.name))
#
# class Dog(Animal):
#     def __init__(self,name):
#         super().__init__(name)
#     def run(self):
#         print("{}在跑".format(self.name))
#
# d = Dog('旺财')
# d.eat()
# d.sleep()
# d.run()

# class Animal:
#     def __init__(self,name):
#         self.name = name
#
#     def eat(self):
#         print("{}在吃东西".format(self.name))
#
#     def sleep(self):
#         print("{}在睡觉".format(self.name))
#
# class Bird(Animal):
#
#     def fly(self):
#         print("{}在飞".format(self.name))
#
# class Fish(Animal):
#     def swim(self):
#         print("{}在游泳".format(self.name))
#
# class Penguin(Bird,Fish):
#     def __init__(self,name):
#         super().__init__(name)
#     def run(self):
#         print("{}在跑".format(self.name))
#
# p = Penguin('小企鹅')
# p.eat()
# p.sleep()
# p.fly()
# p.swim()
# p.run()
# print(Penguin.__mro__)

# class A:
#     def eat(self):
#         print("吃吃吃")
# class B(A):
#     def eat(self):
#         print("吃吃吃吃吃")
#
# b= B()
# b.eat()

class Calc:
    @staticmethod
    def add(a,b):
        return a+b

print(Calc().add(1,2))


